<h1>Tutorial - Basic (Routing basics)</h1>

<p>Welkom bij deel 2 van deze tutorial! In <a href="<?=base_url('tutorial/basic/first_page')?>">deel 1</a>
heb je geleerd hoe je een basis legt om statische pagina's te laden. In deel 2 gaan we 
ons vooral focussen op het onderdeel "Routing".</p>

<p>Zoals in deel 1 al was aangegeven hadden we een lange URL, zoals:</p>

<div class="code">
http://localhost/pages/view/home
</div>

<p>Hier is alleen het segment <strong>home</strong> belangrijk voor ons, het gedeelte
<strong>pages/view</strong> zal altijd hetzelfde blijven. We zullen dus een bepaalde
request moeten routeren naar een bepaalde controller actie.</p>

<p>Open <strong>settings.ini</strong> en zoek de sectie <strong>routing</strong> op. Maak
deze als volgt op:</p>

<div class="code">
<strong>[routing]</strong><br />
:any: = pages/view/$1
</div>

<p>Wat hier eigenlijk staat is dat alles wat na de document root komt (bijv. http://localhost/)
gerouteerd wordt naar de controller "pages", vervolgens wordt de methode "view" aangeroepen
met als argument het gene wat achter "http://localhost/" staat ($1 fungeert als placeholder voor de eerste <i>:any:</i>).
Als je 2 keer een :any: in een routing regel hebt staan, komt de waarde van de eerste :any: in $1 en de tweede in $2 etc.</p>

<p>Als we dus naar deze URL zouden gaan:</p>

<div class="code">
http://localhost/home
</div>

<p>Dan zou <strong>Pages::view('home')</strong> aangeroepen worden (lees dit als: 
    <i>controller-class</i>:<i>:methode</i>(<i>argumenten</i>)).</p>

<p>Probeer dit zelf eens te testen. Als je je routing goed hebt ingesteld, dan
zou je je home pagina moeten kunnen benaderen met <strong>http://localhost/home</strong>.</p>

<p>Mooi, we kunnen nu simpel en snel statische pagina's aanmaken! Maar wat nou als wij
    graag een dynamische pagina willen hebben, bijvoorbeeld een contact pagina met
    een validatie formulier. Dit zou niet zo makkelijk gaan aangezien we alles doorverwijzen naar <strong>pages/view/$1</strong>.
We zouden dit op kunnen lossen door deze dynamische pagina's specifiek door te routen.
Als wij bijvoorbeeld een "Contact" controller hebben dan ziet onze routing er als volgt uit:</p>

<div class="code">
<strong>[routing]</strong><br />
contact = contact<br />
:any: = pages/view/$1
</div>

<p>De volgorde in hoe je de routes zet is ook belangrijk. De meest specifieke moeten namelijk
    bovenaan. Zouden we <strong>contact = contact</strong> onderaan plaatsen, zou de
    routing niet verlopen zoals wij willen. Hij zal deze dan alsnog doorverwijzen naar <strong>pages/view/$1</strong>.
Let hier dus op als je met deze methode werkt!</p>

<br />

<p>Ga verder naar: <a href="<?=base_url('tutorial/basic/news_page')?>">Nieuws pagina maken</a> (deel 3)</p>